跳到主要内容

离线数仓、实时数仓与 DataLakeHouse

· 阅读需 11 分钟

什么是数据仓库

数据仓库是一个为数据分析而设计的企业级数据管理系统。

数据仓库可集中、整合多个信息源的大量数据,借助数据仓库的分析能力,企业可从数据中获得宝贵的信息进而改进决策。

同时,随着时间的推移,数据仓库中积累的大量历史数据对于数据科学家和业务分析师也是十分宝贵的。

什么是数据湖

数据湖(Data Lake)和数据库、数据仓库一样,都是数据存储的设计模式。

数据库和数据仓库会以关系型的方式来设计存储、处理数据。但数据湖的设计理念是相反的,数据仓库是为了保障数据的质量、数据的一致性、数据的重用性等对数据进行结构化处理。

数据湖是一个数据存储库,可以使用数据湖来存储大量的原始数据。

现在企业的数据仓库都会通过分层的方式将数据存储在文件夹、文件中,而数据湖使用的是平面架构来存储数据。

我们需要做的只是给每个数据元素分配一个唯一的标识符,并通过元数据标签来进行标注。

当企业中出现业务问题时,可以从数据湖中查询数据,然后分析业务对应的那一小部分数据集来解决业务问题。

了解过 Hadoop 的同学知道,基于 Hadoop 可以存储任意形式的数据。

所以,很多时候数据湖会和 Hadoop 关联到一起。

例如:把数据加载 Hadoop 中,然后将数据分析、和数据挖掘的工具基于 Hadoop 进行处理。

数据湖越来越多的用于描述任何的大型数据池,数据都是以原始数据方式存储,知道需要查询应用数据的时候才会开始分析数据需求和应用架构。

数据湖是描述数据存储策略的方式,并不与具体的某个技术框架关联。数据库、数据仓库也一样。它们都是数据的管理策略。

数据湖是专注于原始数据保真以及低成本长期存储的存储设计模式,它相当于是对数据仓库的补充。

数据湖是用于长期存储数据容器的集合,通过数据湖可以大规模的捕获、加工、探索任何形式的原始数据。

通过使用一些低成本的技术,可以让下游设施可以更好地利用,下游设施包括像数据集市、数据仓库或者是机器学习模型。

数据湖的优点

(1)提供不限数据类型的存储。

(2)开发人员和数据科学家可以快速动态建立数据模型、构建应用、查询数据,非常灵活。

(3)因为数据湖没有固定的结构,所以更易于访问。

(4)长期存储数据的成本低廉,数据湖可以安装在低成本的硬件在,例如:在一般的 X86 机器上部署 Hadoop。

(5)因为数据湖是非常灵活的,它允许使用多种不同的处理、分析方式来让数据发挥价值,例如:数据分析、实时分析、机器学习以及 SQL 查询都可以。

数据湖与数据仓库对比

数据湖和数据仓库是用于存储大数据的两种不同策略,最大区别是:数据仓库是提前设计好模式(schema)的,因为数据仓库中存储的都是结构化数据。

而在数据湖中,不一定是这样的。数据湖中可以存储结构化和非结构化的数据,是无法预先定义好结构的。

我们来进一步进行对比:

(1)数据的存储位置不同

数据仓库因为是要有结构的,在企业中很多都是基于关系型模型。而数据湖通常位于分布式存储例如 Hadoop 或者类似的大数据存储中。

(2)数据源不同

数据仓库的数据来源很多时候来自于 OLTP 应用的结构化数据库中提取的,用于支持内部的业务部门(例如:销售、市场、运营等部门)进行业务分析。

而数据湖的数据来源可以是结构化的、也可以是非结构化的,例如:业务系统数据库、IOT 设备、社交媒体、移动 APP 等。

(3)用户不同

数据仓库主要是业务系统的大量业务数据进行统计分析,所以会应用数据分析的部门是数据仓库的主要用户,例如:销售部、市场部、运营部、总裁办等等。

而当需要一个大型的存储,而当前没有明确的数据应用用户或者是目标,将来想要使用这些数据的人可以在使用时开始设计架构,此时,数据湖更适合。

但数据湖中的数据都是原始数据,是未经整理的,这对于普通的用户几乎是不可用的。

数据湖更适合数据科学家,因为数据科学家可以应用模型、技术发觉数据中的价值,去解决企业中的业务问题。

(4)数据质量

数据仓库是非常重数据质量的,大家现在经常听说的数据中台,其中有一大块是数据质量管理、数据资产管理等。

数据仓库中的数据都是经过处理的。

而数据湖中的数据可靠性是较差的,这些数据可能是任意状态、形态的数据。

(5)数据模式

数据仓库在数据写入之前就要定义好模式(schema),例如:我们会先建立模型、建立表结构,然后导入数据。

我们可以把它称之为 write-schema。

而数据湖中的数据是没有模式的,直到有用户要访问数据、使用数据才会建立 schema。

我们可以把它称之为 read-schema。

(6)敏捷扩展性

数据仓库的模式一旦建立,要重新调整模式,往往代价很大,牵一发而动全身,所有相关的 ETL 程序可能都需要调整。

而数据湖是非常灵活的,可以根据需要重新配置结构或者模式。

基于上述内容,我们可以了解到,数据湖和数据仓库的应用点是不一样的。他们是两种相对独立的数据设计模式。

在一些企业中,可能会既有数据湖、又有数据仓库。数据湖并不是要替代数据仓库,而是对企业的数据管理模式进行补充。

(7)应用

数据仓库一般用于做批处理报告、BI、可视化。

而数据湖主要用于机器学习、预测分析、数据探索和分析。

数据湖应用

数据湖是用于数据存储的设计模式,但最终数据肯定是需要一种介质存储下来的。

我们可以自己来选择数据湖的物理存储引擎。

例如:使用 Hadoop 作为数据湖的物理存储引擎、或者使用 AWS 的 S3 作为存储引擎等。

但架构数据湖时,需要注意几点原则,这几点原则也将和其他数据存储方法区别开来。

可以加载各种源系统中的数据,并存储。

任意类型的数据都可以存储。

数据是以原始状态保存在数据湖中的,是几乎不需要做任何转换的。

数据可以根据应用、分析的要求,进行转换成适合分析的模式

构建数据湖时,为了方便数据的管理。我们可以建立一些管理办法,例如:

将数据进行合理分类,例如:按照数据类型分类、按照业务内容分类、按照应用场景分类或者按照可能的用户来分类。

为了方便数据湖的数据存取,要提前定义好命名规则和固定的文件目录结构。

如果出现数据质量问题也可以解决掉。

建立数据访问标准,可以追踪到哪些用户正在访问数据。

让数据目录可以被检索到。

提供一些加密、监控、授权、警报等功能。